133 research outputs found
Recommended from our members
Collapsing towers of interpreters
Given a tower of interpreters, i.e., a sequence of multiple interpreters interpreting one another as input programs, we aim to collapse this tower into a compiler that removes all interpretive overhead and runs in a single pass. In the real world, a use case might be Python code executed by an x86 runtime, on a CPU emulated in a JavaScript VM, running on an ARM CPU. Collapsing such a tower can not only exponentially improve runtime performance, but also enable the use of base-language tools for interpreted programs, e.g., for analysis and verification. In this paper, we lay the foundations in an idealized but realistic setting.
We present a multi-level lambda calculus that features staging constructs and stage polymorphism: based on runtime parameters, an evaluator either executes source code (thereby acting as an interpreter) or generates code (thereby acting as a compiler). We identify stage polymorphism, a programming model from the domain of high-performance program generators, as the key mechanism to make such interpreters compose in a collapsible way.
We present Pink, a meta-circular Lisp-like evaluator on top of this calculus, and demonstrate that we can collapse arbitrarily many levels of self-interpretation, including levels with semantic modifications. We discuss several examples: compiling regular expressions through an interpreter to base code, building program transformers from modi ed interpreters, and others. We develop these ideas further to include reflection and reification, culminating in Purple, a reflective language inspired by Brown, Blond, and Black, which realizes a conceptually infinite tower, where every aspect of the semantics can change dynamically. Addressing an open challenge, we show how user programs can be compiled and recompiled under user-modified semantics.Parts of this research were supported by ERC grant 321217, NSF awards 1553471 and 1564207, and DOE award DE-SC0018050
The Dolorem Pattern: Growing a Language Through Compile-Time Function Execution (Artifact)
Programming languages are often designed as static, monolithic units. As a result, they are inflexible. We show a new mechanism of programming language design that allows to more flexible languages: by using compile-time function execution and metaprogramming, we implement a language mostly in itself. Our approach is usable for creating feature-rich, yet low-overhead system programming languages. We illustrate it on two systems, one that lowers to C and one that lowers to LLVM
TINJAUAN HUKUM PELAKSANAAN PEMUNGUTAN PAJAK ROKOK BERDASARKAN UNDANG-UNDANG NOMOR 28 TAHUN 2009 TENTANG PAJAK DAERAH DAN RETRIBUSI DAERAH (Studi Kasus di Provinsi Jawa Tengah)
Pajak Rokok merupakan pungutan atas cukai rokok yang dipungut oleh pemerintah daerah yang berwenang bersamaan dengan pemungutan cukai rokok. Pajak Rokok adalah pajak provinsi yang pertama kali diundangkan pada Undang-Undang Nomor 28 Tahun 2009 di Tahun 2014 dan pelaksanaan pemungutan pajak rokok di Provinsi Jawa Tengah diatur dalam Peraturan Daerah Provinsi Jawa Tengah Nomor 2 Tahun 2011 tentang Pajak Daerah Provinsi Jawa Tengah. Tujuan dari penelitian ini adalah untuk mengkaji pelaksanaan pemungutan pajak rokok berdasarkan Undang-Undang Nomor 28 Tahun 2009 di Provinsi Jawa Tengah dan memahami apa saja yang menjadi hambatan serta upaya dalam pelaksanaan pemungutan pajak rokok di Provinsi Jawa Tengah.Penelitian ini menggunakan metode penelitian kualitatif dengan jenis penelitian deskriptif dan menggunakan pendekatan yuridis sosiologis. Sumber data penelitian yang digunakan berasal dari data primer yaitu wawancara dan data sekunder yaitu studi kepustakaan. Penelitian dilakukan di Kantor Badan Pengelolaan Pendapatan Daerah (BAPPENDA) yang memfokuskan penelitian mengenai pelaksanaan pemungutan pajak rokok di Provinsi Jawa Tengah.Hasil penelitian menunjukkan bahwa pelaksanaan pemungutan pajak rokok di Provinsi Jawa Tengah telah berjalan sesuai prosedur Undang-Undang Nomor 28 tahun 2009 tentang Pajak Daerah dan Retribusi Daerah. Hambatan yang dihadapi antara lain masih maraknya peredaran rokok ilegal, serta tingkat kepatuhan wajib pajak di Provinsi Jawa Tengah relatif rendah. Kata Kunci : Pemungutan Pajak Rokok, Provinsi Jawa Tenga
Dependent Object Types
A scalable programming language is one in which the same concepts can describe small as well as large parts. Towards this goal, Scala unifies concepts from object and module systems. In particular, objects can contain type members, which can be selected as types, called path-dependent types. Focusing on path-dependent types, we develop a type-theoretic foundation for Scala: the calculus of Dependent Object Types (DOT). We derive DOT from System F, we add a lower bound to each type variable, in addition to its usual upper bound, (2) in System D, we turn each type variable into a regular term variable containing a type, (3) for a full subtyping lattice, we add intersection and union types, (4) for objects, we consolidate all values into records, (5) for objects that close over a self, we introduce a recursive type, binding a self term variable, (6) for recursive types, we first extend the theory in typing and then also in subtyping. Through this bottom-up exploration, we discover a sound, uniform yet powerful design for DOT. We devise strategies and techniques for proving soundness that scale through this iterative step-by-step process: (1) "pushback" of subtyping transitivity or subsumption, to concisely capture inversion of subtyping or typing, (2) distinction between concrete vs. abstract context variables, to resolve tension between preservation of types vs. preservation of type abstractions, (3) and, specifically for big-step semantics, a type that closes over an environment, to relate context-dependent types across closures. While ultimately, we have developed sound models of DOT in both big-step and small-step operational semantics, historically, the shift to big-step semantics has been helpful in focusing the requirements. In particular, by developing a novel big-step soundness proof for System F<:, calculi like System D<: emerge as straightforward generalizations, almost like removing artificial restrictions. Interesting in their own right, our type soundness techniques for definitional interpreters extend to mutable references without use of co-induction. The DOT calculus finally grounds languages like Scala in firm theory. The DOT calculus helps in finding bugs in Scala, and in understanding feature interaction better as well as requirements. The DOT calculus serves as a good basis for future work which studies extensions or encodings on top of the core, bridging the gap from DOT to Dotty / Scala
Computer-aided design for multilayer microfluidic chips
Thesis (M. Eng.)--Massachusetts Institute of Technology, Dept. of Electrical Engineering and Computer Science, 2009.Includes bibliographical references (leaves 63-66).Microfluidic chips fabricated by multilayer soft lithography are emerging as "lab-on-a-chip" systems that can automate biological experiments. As we are able to build more complex microfluidic chips with thousands of components, it becomes possible to build devices which can be programmatically changed to solve multiple problems. However, the current design methodology does not scale. In this thesis, we introduce design automation techniques to multilayer soft lithography microfluidics. Our work focuses on automating the design of the control layer. We present a method to define an Instruction Set Architecture as a hierarchical composition of flows. From this specification, we automatically infer and generate the logic and signals to control the chip. To complete the design automation of the control layer, we suggest a routing algorithm to connect control channels to peripheral I/O ports. To the microfluidic community, we offer a free computer-aided design tool, Micado, which implements our ideas for automation in a practical plug-in to AutoCAD. We have evaluated our work on real chips and our tool has been used successfully by microfluidic designers.by Nada Amin.M.Eng
An Energy Efficient Sleep/Wake up Routing Protocol for Wireless Sensor Networks
In recent years, wireless sensor networks (WSNs) have a rapid development and they take a lot of research attention because of their wide-range applications. A WSN consists of a large number of distributed sensor nodes. These nodes are often deployed in remote or hostile areas to monitor physical or environmental conditions where they send this data to a main location. The most critical parameter in WSNs is network lifetime, so an efficient routing protocol is essential to reduce the energy consumption and to increase the network lifetime. This paper proposes an energy-efficient chain-based cooperative routing protocol based on node sleep/wake-up mechanism for WSNs. We compare this protocol with two efficient protocols; LEACH and CBCCP using MATLAB. Simulation results show that the proposed algorithm achieves better performance and conserves more energy than the other two protocols
Relationship of Self-control and Media Exposure with Premarital Sexual Behaviour in Senior High School Students
Premarital sexual behaviour is a social phenomenon that is common today. Modernization is one of the reasons for various parties to share pornographic behaviour on the pretext of being a medium for sexual knowledge. Adolescents with good self-control will be able to control negative behavioural impulses from external factors such as premarital sexual behaviour. This study aims to determine the relationship of self-control and media exposure with premarital sexual behaviour in 11th-grade students of Senior High School “X” in Malang City. The study utilized a correlational quantitative method with a cross-sectional design. A total of 76 students, selected using a simple random sampling technique, were included in the study. Data were collected through a questionnaire and analysed using a linear regression analysis with a significance level of (α = 5%) = 0.05. The study found that self-control and information media were both partially and simultaneously related to the premarital sexual behaviour in adolescents. Based on the analysis, the beta value of the selfcontrol was β = 0.303, and that of the information media was β = 0.227. This indicated that the self-control variable had the most dominant relationship with premarital sexual behaviour. Further, the R-Square value was 0.416, which meant premarital sexual behaviour in 41.6% of the 11th-grade adolescents of Senior High School “X” in Malang City was related to two independent variables, self-control and information media.
Keywords: adolescent, self-control, media exposure, premarital sexual behaviou
Recommended from our members
A SQL to C compiler in 500 lines of code
AbstractWe present the design and implementation of a SQL query processor that outperforms existing database systems and is written in just about 500 lines of Scala code – a convincing case study that high-level functional programming can handily beat C for systems-level programming where the last drop of performance matters. The key enabler is a shift in perspective toward generative programming. The core of the query engine is an interpreter for relational-algebra operations, written in Scala. Using the open-source lightweight modular staging framework, we turn this interpreter into a query compiler with very low effort. To do so, we capitalize on an old and widely known result from partial evaluation: the first Futamura projection, which states that a process that can specialize an interpreter to any given input program is equivalent to a compiler. In this context, we discuss lightweight modular staging programming patterns such as mixed-stage data structures (e.g., data records with static schema and dynamic field components) and techniques to generate low-level C code, including specialized data structures and data loading primitives.</jats:p
Versatile event correlation with algebraic effects
We present the first language design to uniformly express variants of
n
-way joins over asynchronous event streams from different domains, e.g., stream-relational algebra, event processing, reactive and concurrent programming. We model asynchronous reactive programs and joins in direct style, on top of algebraic effects and handlers. Effect handlers act as modular interpreters of event notifications, enabling fine-grained control abstractions and customizable event matching. Join variants can be considered as cartesian product computations with ”degenerate” control flow, such that unnecessary tuples are not materialized a priori. Based on this computational interpretation, we decompose joins into a generic, naive enumeration procedure of the cartesian product, plus variant-specific extensions, represented in terms of user-supplied effect handlers. Our microbenchmarks validate that this extensible design avoids needless materialization. Alongside a formal semantics for joining and prototypes in Koka and multicore OCaml, we contribute a systematic comparison of the covered domains and features.
ERC, Advanced Grant No. 321217
ERC, Consolidator Grant No. 617805
DFG, SFB 1053
DFG, SA 2918/2-
Dependent Object Types
We propose a new type-theoretic foundation of Scala and languages like it: the Dependent Object Types (DOT) calculus. DOT models Scala’s path-dependent types, abstract type members and its mixture of nominal and structural typing through the use of refinement types. The core formalism makes no attempt to model inheritance and mixin composition. DOT normalizes Scala’s type system by unifying the constructs for type members and by providing classical intersection and union types which simplify greatest lower bound and least upper bound computations. In this paper, we present the DOT calculus, both formally and informally. We also discuss our work-in-progress to prove typesafety of the calculus
- …